Computing clusters such as data centers, groups of interconnected computers, and distributed computing networks are increasingly used for distributed computing tasks. Tasks may be part of an overall distributed computing task, for example, data may be divided into portions and the portions distributed to different computing devices in a data center. A job may involve processing the data by carrying out tasks at the computing devices. In an example the data which is to be processed may be stored on different computing devices in the data centre.
In order to allocate tasks to machines in a computing cluster decisions need to be made as to how best to allocate the tasks. Automated approaches are typically complex and often only practical for particular types of distributed computing networks with particular operating conditions. Parameters of such automated systems are usually manually configured by operators using empirical data and this is time consuming, complex and error prone.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known task allocation systems.